package com.cj.dao;

import com.cj.po.Admin;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 管理员DAO层接口
 */
public interface AdminDao {

	/**
	 * 通过账号和密码查询管理员
	 * @param admin 包含管理员的账号和密码信息
	 * @return 返回匹配的管理员对象
	 */
	public Admin findAdmin(Admin admin);

	/**
	 * 进行分页查询

	 * 获取总条数
	 * @param a_username 管理员用户名
	 * @param a_describe 管理员描述
	 * @param a_id 管理员ID
	 * @return 返回符合条件的管理员总数
	 */
	public Integer totalCount(@Param("a_username") String a_username,
							  @Param("a_describe") String a_describe,
							  @Param("a_id") Integer a_id);

	/**
	 * 获取用户列表
	 * @param a_username 管理员用户名
	 * @param a_describe 管理员描述
	 * @param a_id 管理员ID
	 * @param currentPage 当前页码
	 * @param pageSize 每页显示的记录数
	 * @return 返回指定页码的管理员列表
	 */
	public List<Admin> getAdminList(@Param("a_username") String a_username,
									@Param("a_describe") String a_describe,
									@Param("a_id") Integer a_id,
									@Param("currentPage") Integer currentPage,
									@Param("pageSize") Integer pageSize);

	/**
	 * 添加管理员信息
	 * @param admin 要添加的管理员对象
	 * @return 返回添加的结果，成功返回1，失败返回0
	 */
	public int addAdmin(Admin admin);

	/**
	 * 删除管理员信息
	 * @param a_id 要删除的管理员ID
	 * @return 返回删除的结果，成功返回1，失败返回0
	 */
	public int deleteAdmin(Integer a_id);

	/**
	 * 修改管理员信息
	 * @param admin 要更新的管理员对象
	 * @return 返回更新的结果，成功返回1，失败返回0
	 */
	public int updateAdmin(Admin admin);

	/**
	 * 通过ID查询管理员
	 * @param a_id 管理员ID
	 * @return 返回匹配的管理员对象
	 */
	public Admin findAdminById(Integer a_id);

	/**
	 * 获取所有管理员信息
	 * @return 返回所有管理员的列表
	 */
	public List<Admin> getAll();
}
